﻿using System;
using System.Collections;
using System.Collections.Specialized;
using System.Linq.Expressions;
using Castle.MonoRail.Framework;

namespace Castle.MonoRail.ExtensionMethods {
	public interface IUrlBuilderExtensionsProvider {
		string BuildUrl<T>(IUrlBuilder self, UrlInfo current, Expression<Action<T>> action) where T : Controller;
		string BuildUrlWithParams<T>(IUrlBuilder self, UrlInfo current, Expression<Action<T>> action) where T : Controller;

		string BuildUrl<T>(IUrlBuilder self, UrlInfo current, Expression<Action<T>> action, IDictionary parameters)
			where T : Controller;

		string BuildUrl<T>(IUrlBuilder self, UrlInfo current, Expression<Action<T>> action, NameValueCollection parameters)
			where T : Controller;
	}
}